/**
 * 1. 什么是包?
 *      我们电脑上的文件夹, 包含了某些特定的文件, 符合了某些特定的结构, 就是一个包
 * 
 * 2. 一个标准的包, 应该包含哪些内容?
 *      1) package.json
 *      2) bin
 *      3) lib
 *      4) doc
 *      5) test
 * 
 * 3. 如何让一个普通文件夹变成一个包
 *      1) 让这个文件夹拥有一个 package.json 文件即可, 且 package.json文件里面的内容呀合法
 *      2) 执行命令: npm init
 *      3) 包名的要求, 不能有中文, 不能有大写字母, 不能与npm仓库上其他包同名
 * 
 * 4. npm与node的管理? (npm: node package manager)
 *      安装node后自动安装npm
 * 
 * 5. npm常用命令
 *      1) 搜索
 *          yum search xxx
 *          通过网址搜索: www.npmjs.com
 *      2) 安装: 安装之前必须保证文件内有package.json
 *          a. npm i xxx 
 *              备注: 
 *              局部安装完的第三方包, 放在当前目录的node_modules文件夹里
 *              安装完毕会自动产生一个package-lock.json(npm在版本5以后才有), 里面缓存的是每个下载过的包的地址, 目的是下次安装时速度快一点
 *              当安装完一个包, 该包的名字会自动写入到package.json中的[dependencies(生产依赖)]里
 *          b. npm i xxx -D 安装包并将该包写入到[devDependencies(开发依赖)]中
 *              备注: 什么是生产依赖与开发依赖?
 *              只在开发时(写代码)时需要依赖的库, 就是开发依赖, 例如: 语法检查, 代码压缩
 *              在生产环境中必不可少的包, 就是生产依赖, 例如: jquery, axios
 *              某些包既属于开发依赖, 又属于生产依赖, 例如: jquery
 *          c. 全局安装: npm i xxx -g
 *              全局安装xxx包, 一般来说, 带有指令集的包要进行全局安装, 例如browserify, babel等
 *              查看全局安装的位置: npm root -g
 *          d. npm i xxx@yyy 安装xxx包的yyy版本
 *          e. npm i: 安装package.json中声明的所有包
 *      3) 移除
 *          npm remove xxx 在node_module中删除xxx包, 并且删除该包在package.json中的声明
 *      4) 其他命令
 *          a. npm aduit fix: 检测项目依赖中的一些问题, 并且尝试着修复
 *          b. npm view xxx versions: 查看npm仓库中xxx包的所有版本信息
 *          c. npm view xxx version: 查看npm仓库中xxx包的最新版本
 *          d. npm ls xxx: 查看我们所安装的xxx包的版本
 *      5) 关于版本号的说明
 *          "^3.x.x": 锁定大版本, 以后安装包的时候, 保证包是3.x.x版本, x默认取最新的
 *          "~3.1.x": 锁定小版本, 以后安装包的时候, 保证包是3.1.x版本, x默认取最新的
 *          "3.1.1": 锁定完整版本, 以后安装包的时候, 保证包必须是3.1.1版本
 */